<?php

/*
	파일명: TodoList.class.php
	제작자: 박경종(너굴군)
	제작일시: 2008-07-06
	최종업데이트: 2008-07-06
	이메일: kevinpark1981@gmail.com
	홈페이지: http://bequietzero.com
*/

include_once '_common.php';	// 그누보드를 위한 인크루드..
include_once 'interface.php';


/*	클래스: TodoList
	PHP버전: 5.0 이상
	설명: Todo List를 보여주고 Ajax를 이용해 추가/완료/삭제를 한다.
*/
class TodoList implements ITodoList 
{

	private $style;		//< 스타일 저장
	private $script;	//< 스크립트 저장
	private $classPath;	//< 클래스 경로
    private $bo_table;  //< todo list가 저장된 테이블
    private $list;      //< todo list목록


    /* 싱글톤 패턴 */
    private static $inst;
    public static function getInstance($bo_table='') {
        global $g4;
        if(!isset(TodoList::$inst)) TodoList::$inst = new TodoList("$g4[path]/class", $bo_table);
        else TodoList::$lnst->setTable($bo_table);
        return TodoList::$inst;
    }

    /* 테이블 설정 */
    public function setTable($bo_table) {
        $this->bo_table = $bo_table;
    }


	/*	함수: view
		설명: todo list의 HTML코드를 반환해 준다.
		파라미터:	$bo_table - todo list 저장 테이블명
	*/
	final public function view($bo_table='') {
        if($bo_table!='') $this->bo_table = $bo_table;
        if($this->bo_table=='') return 'error';
		$this->query();
		return $this->createHTML();
	}


	/*	함수: query	
		설명: todolist 테이블에 쿼리를 실행한다. $list에 목록을 저장한다.
              현재 접속중인 사용자가 쓴 글만 얻어온다.
              회원별로 관리가 가능하다.
              link1에 unlist가 확인되면 리스트하지 않는다.
	*/
    protected function query() {
		global $g4;
        global $member;

        if($member[mb_id]) {

            $sql = "SELECT * FROM `$g4[write_prefix]$this->bo_table` WHERE `mb_id`='$member[mb_id]' AND wr_link1 <> 'unlist' AND wr_id = wr_parent order by  wr_last desc ";
            $todolist = sql_query($sql);
            for ($i=0; $row = sql_fetch_array($todolist); $i++) {
                    $this->list[$i] = array();
                    $this->list[$i] = $row;
            }

        }
	}

	/*	함수: createHTML
		설명: 페이지에 삽입될 html소스를 생성한다. 기본적으로 ul li리스트를 생성한다.
	*/
	protected function createHTML() {

        $html='';
        ob_start();
        include "$this->classPath/html/TodoList.html.php";
        $html .= ob_get_contents();
        ob_end_clean();

		if($html!='') {$this->addStyle(); $this->addScript();}
		return $html;
	}


	/*  함수: addStyle
        설명: 페이지에 삽입될 html소스의 스타일을 생성한다.
    */
    protected function addStyle(){
        if(!isset($this->style) || $this->style=='') {
            $this->style = "<link rel=\"stylesheet\" href=\"{$this->classPath}/style/TodoList.style.css\" type=\"text/css\">";
        }
    }

   	/*  함수: addScript
        설명: 페이지에 삽입될 스크립트를 생성한다.
    */
    protected function addScript() {
        if(!isset($this->script) || $this->script=='') {
            $this->script = "<script language='javascript' src='{$this->classPath}/script/TodoList.script.js'></script>";
        }
    }


	// 생성자
	protected function __construct($classPath, $bo_table='') {
        $this->classPath = $classPath;
        $this->bo_table = $bo_table;
	}

	function __destruct() {
		echo $this->style.$this->script;
	}

	// setter and getter
	//function __get($name) {return $this->$name;}
	//function __set($name, $value) {$this->$name = $value;}

}

/*	버전 히스토리	
-----------------------------------------------------------

	버전1.0:2008-07-06
	-------------------------------------------------------
		Ajax를 이용해 간단하게 목록을 추가/완료/삭제 가능하도록 구현 하였다.
-----------------------------------------------------------
*/
?>